package cn.rubintry.calculator


/**
 * 不得不说，以前写那种从textView里取值然后再计算的代码很难受，
 * 尤其数量很多的时候，直接写到吐^...^ ，为此，留下这个工具用
 * 来简化繁琐的运算
 *
 * 特性：
 * 1.支持获取Int、BigDecimal类型的运算结果（最终会转换成String）
 * 2.可传入String、TextView、Int、Double等值参与加、减、乘、除运算
 * 3.借鉴了Glide的api设计，调用层简洁明了
 */
final class ViewCalculator {

    companion object{
        /**
         * 自动解析数据类型获得对应的计算器
         * @param clazz
         * @return
         */
        @JvmStatic
        fun  with(clazz: Class<out Number>): ICalculator<*> {
            return CalculatorFactory.create(clazz)
        }

        /**
         * 使用自定义计算器
         *
         * @param T
         * @param C
         * @param clazz
         * @return
         */
        @JvmStatic
        fun <T : Number ,C : ICalculator<T>> asCustom(clazz: Class<C>): C {
            return clazz.newInstance()
        }

    }


}